package com.jm.controller;


import com.jm.common.util.entity.R;
import com.jm.service.CommonService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


/**
 * 此表现层用于图片的下载与上传
 */
@Slf4j
@RestController
@RequestMapping("/common")
public class CommonController {

    @Autowired
    private CommonService commonService;

    /**
     * 当前file的文件在一次请求未结束时是临时文件,当
     * 此次请求结束,则文件也会消失所以就要转存到使其在请求结束后也可以存在
     *
     * @param file 名字需要与前端设置的文件名字一致
     * @return 文件的名字
     */
    @PostMapping("/upload")
    public R<String> upload(MultipartFile file) throws IOException {
//        文件名称 数据处理
        String fileName = commonService.getFileName(file);
//       返回文件名
        return R.success(fileName);
    }


    /**
     * 用于将上传的文件写入到浏览器中
     *
     * @param name     需要上传的文件名
     * @param response
     * @throws IOException
     */
    @GetMapping("/download")
    public void download(String name, HttpServletResponse response) throws IOException {
//        传入文件名字还有类型以及响应的对象
        commonService.downLoadFile(name, response, "image/jpeg");
    }

}
